package com.scau.hwadee.examination.service;

import com.scau.hwadee.examination.entity.UserInfo;
import org.apache.shiro.session.Session;

import javax.servlet.http.HttpServletResponse;
import java.util.Map;

/**
 * @author YHX
 * @description
 * @date 2019/7/30 20:06
 **/
public interface LogInOutService {
    /**
     * @author YHX
     * @description 获取验证码
     * @date 16:15 2019/8/4
     * @Param [session, response]
     * @return void
     **/
    void getAuthCode(Session session, HttpServletResponse response);

    /**
     * @author YHX
     * @description 注册
     * @date 16:15 2019/8/4
     * @Param [userInfo]
     * @return java.lang.String
     **/
    String register(UserInfo userInfo);

    /**
     * @author YHX
     * @description 检查登录状态
     * @date 16:15 2019/8/4
     * @Param [session]
     * @return java.util.Map<java.lang.String,java.lang.Object>
     **/
    Map<String, Object> checkLogInStatus(Session session);

    /**
     * @author YHX
     * @description 登录
     * @date 16:16 2019/8/4
     * @Param [param]
     * @return java.util.Map<java.lang.String,java.lang.Object>
     **/
    Map<String, Object> login(Map<String, Object> param);

    /**
     * @author YHX
     * @description 检查登录类型，是否有重复登录
     * @date 16:16 2019/8/4
     * @Param [message, session]
     * @return int
     **/
    int checkLoginType(String message, Session session);

    /**
     * @author YHX
     * @description 登出
     * @date 16:16 2019/8/4
     * @Param []
     * @return java.lang.String
     **/
    String logout();

    /**
     * @author YHX
     * @description 验证验证码是否正确
     * @date 16:16 2019/8/4
     * @Param [vcode, session]
     * @return java.util.Map<java.lang.String,java.lang.Object>
     **/
    Map<String, Object> validateVCode(String vcode, Session session);

    /**
     * @author YHX
     * @description 邮箱验证码验证
     * @date 16:17 2019/8/4
     * @Param [map]
     * @return java.util.Map<java.lang.String,java.lang.Object>
     **/
    Map<String, Object> email(Map<String, Object> map);
    /**
     * @author YHX
     * @description 随机生成6位的邮箱验证码
     * @date 16:17 2019/8/4
     * @Param [bits]
     * @return java.lang.String
     **/
    String createRandomAuthCode(int bits);
}
